﻿using Future.Common.Models;
using Future.Model.DtoModel;
using Future.Model.SysModel;

namespace Future.IBLL
{
    /// <summary>
    /// 描述：字典信息相关接口
    /// 创建人： yangkai
    /// 创建时间：2022/11/21 17:58:44
    /// </summary>
    public interface IDictionaryInfoBLL
    {
        /// <summary>
        /// 新增字典数据
        /// </summary>
        /// <param name="dicData"></param>
        /// <returns></returns>
        bool AddDictData(DictDataModel dicData);

        /// <summary>
        /// 创建字典类型数据
        /// </summary>
        /// <param name="dictTypeModel"></param>
        /// <returns></returns>
        bool CreateDictType(DictTypeModel dictTypeModel);

        /// <summary>
        /// 删除字典数据
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        bool DeleteDictDataList(List<Guid> ids);

        /// <summary>
        /// 批量删除字典类型
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        bool DeleteDictTypeList(List<Guid> ids);

        /// <summary>
        /// 动态条件分页查询字典数据
        /// </summary>
        /// <param name="dictDataQueryDto"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        Task<PageModel<DictDataModel>> DictDataPageList(DictDataQueryDto dictDataQueryDto, PageParModel page);

        /// <summary>
        /// 查询字典数据详细
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        DictDataModel GetDictDataById(Guid id);

        /// <summary>
        /// 根据类型获取字典数据
        /// </summary>
        /// <param name="dictType"></param>
        /// <returns></returns>
        List<DictDataModel> GetDictDataByType(string dictType);

        /// <summary>
        /// 查询字典类型详细
        /// </summary>
        /// <param name="dictId"></param>
        /// <returns></returns>
        DictTypeModel GetDictTypeById(Guid dictId);

        /// <summary>
        /// 获取字典选择框列表
        /// </summary>
        /// <returns></returns>
        List<DictTypeModel> GetDictTypeList();

        /// <summary>
        /// 分页获取字典类型
        /// </summary>
        /// <param name="dictTypeQueryDto"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        PageModel<DictTypeModel> SelctPageList(DictTypeQueryDto dictTypeQueryDto, PageParModel page);

        /// <summary>
        /// 修改字典数据
        /// </summary>
        /// <param name="dicData"></param>
        /// <returns></returns>
        bool UpdateDictData(DictDataModel dicData);

        /// <summary>
        /// 修改字典类型
        /// </summary>
        /// <param name="dictTypeModel"></param>
        /// <returns></returns>
        bool UpdateDictType(DictTypeModel dictTypeModel);
    }
}
